package cn.iocoder.yudao.module.resource.service.advertisement;

import cn.iocoder.yudao.module.resource.dal.dataobject.advertisement.ResourceAdvertisementDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 广告 Service 接口
 *
 * @author 芋道源码
 */
public interface ResourceAdvertisementService {

    /**
     * 创建广告
     *
     * @param advertisementDO 广告信息
     * @return 广告ID
     */
    Long createAdvertisement(@Valid ResourceAdvertisementDO advertisementDO);

    /**
     * 更新广告
     *
     * @param advertisementDO 广告信息
     */
    void updateAdvertisement(@Valid ResourceAdvertisementDO advertisementDO);

    /**
     * 删除广告
     *
     * @param id 广告ID
     */
    void deleteAdvertisement(Long id);

    /**
     * 获得广告
     *
     * @param id 广告ID
     * @return 广告
     */
    ResourceAdvertisementDO getAdvertisement(Long id);

    /**
     * 根据广告商ID获得广告列表
     *
     * @param advertiserId 广告商ID
     * @return 广告列表
     */
    List<ResourceAdvertisementDO> getAdvertisementListByAdvertiserId(Long advertiserId);

    /**
     * 根据状态获得广告列表
     *
     * @param status 状态
     * @return 广告列表
     */
    List<ResourceAdvertisementDO> getAdvertisementListByStatus(Integer status);

    /**
     * 增加展示次数
     *
     * @param id 广告ID
     */
    void incrementShowCount(Long id);

    /**
     * 增加点击次数
     *
     * @param id 广告ID
     */
    void incrementClickCount(Long id);

}
